package com.vegetable.modules.service.stock;

import com.vegetable.modules.entity.stock.CostWeightChangeSource;
import com.vegetable.modules.vo.CostWeightChangeChainVO;

import java.util.List;

/**
 * <p>
 * 连锁变化链路视图服务接口
 * </p>
 *
 * @author wangruijie
 * @since 2024-03-21
 */
public interface IChainViewService {

    /**
     * 构建连锁变化链路视图
     * @param rootChange 源头变化记录
     * @return 连锁变化链路视图
     */
    CostWeightChangeChainVO buildChainView(CostWeightChangeSource rootChange);

    /**
     * 根据源头订单ID构建连锁变化链路视图
     * @param sourceOrderId 源头订单ID
     * @return 连锁变化链路视图
     */
    CostWeightChangeChainVO buildChainViewBySourceOrder(Long sourceOrderId);

    /**
     * 获取所有连锁变化节点
     * @param rootChange 源头变化记录
     * @return 连锁变化节点列表
     */
    List<CostWeightChangeSource> getAllChainNodes(CostWeightChangeSource rootChange);
}